package com.java.util;

import java.util.ArrayList;
import java.util.List;

public class PageUtil<E> {
    //首页
    private final int FIRST_PAGE = 1;
    //当前页码
    private int currentPage;
    //每页显示的记录数
    private int pageSize;
    //上一页
    private int previousPage;
    //下一页
    private int nextPage;
    //总页数
    private int totalPage;
    //起始值
    private int startIndex;
    //结果束值
    private int endIndex;
    //总记录数
    private int record;
    //使用集合存储数据
    private List<E> data = new ArrayList<>();

    //  当前页码是2   每页显示 3 条记录   总有  10 条记录
    public PageUtil(int currentPage,int pageSize,int record){
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        this.record = record;
    }

    public int getFIRST_PAGE() {
        return FIRST_PAGE;
    }

    //当前页码由构造器赋有值
    public int getCurrentPage() {
        return currentPage;
    }

    //由外部决定(通过构造器赋有值了)
    public int getPageSize() {
        return pageSize;
    }

    //上一页
    public int getPreviousPage() {
        //当前页码 - 1 < 1 ? 1 : 当前页码 - 1
        previousPage = currentPage - 1 < 1 ? 1 : currentPage - 1;
        return previousPage;
    }

    //下一页
    public int getNextPage() {
        //当前页码 + 1 > 总页数 ？ 总页数 : 当前页码 + 1
        nextPage = currentPage + 1 > this.getTotalPage() ? this.getTotalPage() : currentPage + 1;
        return nextPage;
    }

    //总页数
    public int getTotalPage() {
        //（总记录数 - 1） / 每页显示的记录数 + 1
        totalPage = (record - 1) / pageSize + 1;
        return totalPage;
    }

    //起始值
    public int getStartIndex() {
        //（当前页码 - 1） * 每页显示的记录数 + 1
        startIndex = (currentPage - 1) * pageSize + 1;
        return startIndex;
    }

    //结束值
    public int getEndIndex() {
        //当前页码 * 每页显示的记录数
        endIndex = currentPage * pageSize;
        return endIndex;
    }

    //构造赋有值
    public int getRecord() {
        return record;
    }

    //获取集合中的数据
    public List<E> getData() {
        return data;
    }

    //存数据数据的集合
    public void setData(List<E> data) {
        this.data = data;
    }
}
